iT邦幫忙

0

[Golang]嵌入類型,組合而不是繼承。

  • 分享至 

  • xImage
  •  

嵌入類型,或者嵌套類型。這是一種把已有的類型,聲明在新的類型裡的方式,這個對程式碼重複使用非常重要。
在Go語言中,沒有繼承的概念,Go提倡的是重複使用程式碼,組合。組合而不是繼承。

https://golang.org/doc/faq#inheritance

來透過標準函數庫 io,來加深印象。
可以看到 ReadWriter的接口是嵌入 Reader 和 Writer 接口而組成的新接口。
這樣就不要重複定義被嵌入接口裡的方法,直接通過嵌入。

type Reader interface {
  Read(p []byte) (n int, err error)
}

type Writer interface {
  Write(p []byte) (n int, err error)
}

type Closer interface {
  Close() error
}

type ReadWriter interface {
  Reader
  Writer
}

type ReadCloser interface {
  Reader
  Closer
}

type WriteCloser interface {
  Writer
  Closer
}

type ReadWriteCloser interface {
  Reader
  Writer
  Closer
}

參考來源:

https://www.flysnow.org/2017/04/06/go-in-action-go-embedded-type.html
https://golang.org/pkg/io/#ReadWriteCloser


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言